package com.loiane.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.loiane.dao.TipoDAO;
import com.loiane.model.Tipo;
import com.loiane.util.Util;

@Service
public class TipoService {

	private TipoDAO tipoDAO;
	private Util util;

	@Autowired
	public void setTipoDAO(TipoDAO tipoDAO) {
		this.tipoDAO = tipoDAO;
	}

	@Autowired
	public void setUtil(Util util) {
		this.util = util;
	}

	// @Transactional(readOnly=true)
	public List<Tipo> getTipoList() {
		System.out.println("llamandooooo");
		// listatempo = null;

		try {
			List<Tipo> listatempo = tipoDAO.getTipos();
			if (listatempo != null) {
				System.out.println("listatempo tiene " + listatempo.size()
						+ " elementos");
			} else {
				System.out.println("listatempo es nula !");
			}
			return listatempo;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return null;

	}

	@Transactional
	public List<Tipo> create(Object data) {
		List<Tipo> newTipos = new ArrayList<Tipo>();
		List<Tipo> list = util.getTiposFromRequest(data);

		for (Tipo tipo : list) {
			newTipos.add(tipoDAO.saveTipo(tipo));
		}
		return newTipos;
	}

	@Transactional
	public List<Tipo> update(Object data) {

		List<Tipo> returnTipos = new ArrayList<Tipo>();

		List<Tipo> updatedTipos = util.getTiposFromRequest(data);

		for (Tipo tipo : updatedTipos) {
			returnTipos.add(tipoDAO.saveTipo(tipo));
		}

		return returnTipos;
	}

	@Transactional
	public void delete(Object data) {

		// it is an array - have to cast to array object
		if (data.toString().indexOf('[') > -1) {

			List<Integer> deleteTipos = util.getListIdFromJSONTipo(data);

			for (Integer id : deleteTipos) {
				tipoDAO.deleteTipo(id);
			}

		} else { // it is only one object - cast to object/bean

			Integer id = Integer.parseInt(data.toString());

			tipoDAO.deleteTipo(id);
		}
	}

}
